package com.pearadmin.pro.modules.paper.service;


import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.pearadmin.pro.modules.examUtils.PagingReqDTO;
import com.pearadmin.pro.modules.paper.dto.ext.PaperQuDetailDTO;
import com.pearadmin.pro.modules.paper.dto.request.PaperAnswerDTO;
import com.pearadmin.pro.modules.paper.dto.request.PaperListReqDTO;
import com.pearadmin.pro.modules.paper.dto.response.ExamDetailRespDTO;
import com.pearadmin.pro.modules.paper.dto.response.ExamResultRespDTO;
import com.pearadmin.pro.modules.paper.dto.response.PaperListRespDTO;
import com.pearadmin.pro.modules.paper.entity.Paper;

/**
 * 试卷业务类
 *
 * @author ZhouXingYun
 * @date 2022/5/23 17:23
 */
public interface PaperService extends IService<Paper> {


    /**
     * 查找题目详情
     * @author ZhouXingYun
     * @date 2022/5/23 17:35
     * @param paperId
     * @param quId
     * @return com.pearadmin.pro.modules.paper.dto.ext.PaperQuDetailDTO
     */
    PaperQuDetailDTO findQuDetail(String paperId, String quId);

    /**
     * 查找详情
     * @author ZhouXingYun
     * @date 2022/5/23 18:37
     * @param id
     * @return com.pearadmin.pro.modules.paper.dto.response.ExamDetailRespDTO
     */
    ExamDetailRespDTO paperDetail(String id);


    /**
     * 创建试卷
     * @author ZhouXingYun
     * @date 2022/5/24 9:26
     * @param userId
     * @param examId
     * @return java.lang.String
     */
    String createPaper(String userId, String examId);


    /**
     * 填充答案
     * @author ZhouXingYun
     * @date 2022/5/24 16:15
     * @param reqDTO
     */
    void fillAnswer(PaperAnswerDTO reqDTO);


    /**
     * 交卷操作
     * @author ZhouXingYun
     * @date 2022/5/24 17:56
     * @param paperId
     */
    void handExam(String paperId);

    /**
     * 试卷列表响应类
     * @author ZhouXingYun
     * @date 2022/5/25 10:20
     * @param reqDTO
     * @return com.baomidou.mybatisplus.core.metadata.IPage<com.pearadmin.pro.modules.paper.dto.response.PaperListRespDTO>
     */
    IPage<PaperListRespDTO> paging(PagingReqDTO<PaperListReqDTO> reqDTO);


    /**
     * 考试结果
     * @param paperId
     * @return
     */
    ExamResultRespDTO paperResult(String paperId);

}
